package club.jdiy.core.sql;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * JPA实体字段元信息
 *
 * @author ziquee(子秋) QQ号:39886616 主页: http://www.jdiy.club
 * @version 20210503
 */
@SuppressWarnings("Lombok")
@EqualsAndHashCode(callSuper = true)
@Data
public class EntityFieldInfo extends CommentInfo {
    public enum Type {
        BASIC, //基本类型
        JOIN, //外键(通常是@ManyToOne类型)
        LIST  //通常是@OneToMany或@ManyToMany 的List反向关联引用类型
    }

    private String column;//数据库字段名(属性是List时，为空。 通常是@OneToMany关系)
    private Type type;//属性类型
    private Class<?> typeClass;//属性类型
    private Class<?> memberIdClass;//Type=JOIN时，指示成员实体类的主键id的class类型
    private Class<?> listClass;//当type=LIST时，指示子实体引用类型

    private String columnType;//数据库字段类型定义

    EntityFieldInfo(String name, Class<?> typeClass) {
        super(name,"");
        this.typeClass = typeClass;
        this.type = Type.BASIC;
    }

    void setComment(String comment) {
        this.comment = comment;
    }
}
